package com.sugon.dao;

import com.sugon.entity.SparePartRequDetailEntity;
import com.sugon.modules.sparepart.model.vo.SparePartRequDetailVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 备件需求计划明细Dao
 *
 * @author sugon
 * @date 2019-08-02 14:31:17
 */
public interface SparePartRequDetailDao extends BaseDao<SparePartRequDetailEntity> {

    /**
     * 根据需求明细ID获取需求明细信息
     *
     * @param id
     * @return
     */
    SparePartRequDetailVO queryById(String id);

    /**
     * 根据需业务码获取需求明细信息
     *
     * @param businessCode 业务码，由备件专员回填
     * @return
     */
    SparePartRequDetailEntity queryByBusinessCode(@Param("businessCode") String businessCode);

    /**
     * 条件查询备件需求计划详情
     *
     * @param param 查询
     * @return
     */
    List<SparePartRequDetailVO> listAll(Map<String, Object> param);

    /**
     * 根据计划编码查询计划下的所有条目信息
     *
     * @param planCode
     * @return
     */
    List<SparePartRequDetailEntity> listByPlanCode(@Param("planCode") String planCode);

    /**
     * 统计指定需求计划的总金额
     *
     * @param planIds 需求计划ID列表
     * @return
     */
    Double countTotalMoney(Map<String, Object> param);

    /**
     * 统计指定车间特定备件的在途数
     * 1、备件需求计划必须是终版的
     * 2、未取消在途的
     *
     * @param deptId   车间ID
     * @param spIdList 备件ID列表
     * @return
     */
    int sumTransitNum(@Param("deptId") String deptId, @Param("spIdList") List<String> spIdList);

    /**
     * 统计指定车间特定备件的在途数
     * 1、备件需求计划必须是终版的
     * 2、未取消在途的
     *
     * @param deptId   车间ID
     * @param spIdList 备件ID列表
     * @return
     */
    int sumDemandNum(@Param("deptId") String deptId, @Param("spIdList") List<String> spIdList);

    /**
     * 删除备件需求计划明细
     *
     * @param planId
     * @return
     */
    int deleteByPlanId(@Param("planId") String planId);

}
